One way to identify a cause of an error condition or other undesired event is to create a fault tree that represents, as a graphical hierarchical diagram, logical relationships among events, conditions, or other functions that may give rise to the undesired event.
Such a fault tree may comprise a root node that identifies a top-level event or object to be analyzed. Branches of such a fault tree may comprise other nodes that each identify a function that may give rise to the undesired event, and may further are connected by “signal-line” logical relationships. These signal lines may in turn be connected to inputs or outputs of logical operators, such as AND, OR, or NOR gates.
By assuming a hierarchical structure in which the object to be analyzed is identified by a root node of the tree, a fault tree can identify sets or sequences of events that may result in an occurrence of the object.
A fault tree that analyzes a real-world object may be very complex. Some of this complexity may be due to redundant or unnecessary functional blocks or signal lines that could be eliminated without affecting the accuracy, precision, or utility of the fault tree.